package user_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models/res"
	"giv-vue-blog/service"
	"giv-vue-blog/utils/jwts"
)

// LogoutView 注销接口
// @Summary 用户注销
// @Description 用户注销，将登录的用户从系统中注销并使其失效
// @Tags 用户管理
// @Accept json
// @Produce json
// @Param token header string true "用户令牌"
// @Router /api/logout [post]
// @Success 200 {string} string "注销成功"
// @Failure 400 {object} res.Response "请求参数错误"
// @Failure 500 {object} res.Response "服务器内部错误"
func (UserApi) LogoutView(c *gin.Context) {
	_claims, _ := c.Get("claims")
	claims := _claims.(*jwts.CustomClaims)
	token := c.Request.Header.Get("token")
	err := service.ServiceApp.UserService.UserLogout(claims, token)
	if err != nil {
		global.Log.Error(err)
		res.FailedWithMsg("注销失败", c)
		return
	}
	res.OkWithMsg("注销成功", c)
}
